import {useState,useEffect} from 'react'
import {datasourceList} from '../../api/datasource';

// table的page参数配置
const PAGINATION = {
  pageSize: 15, // 每页显示条数
  total: 0, // 总条数
  showTotal: (total) => `共 ${total} 条` // 显示总条数
};
// 数据源列表默认请求参数
const DATASOURCEPARAMS = {
  page: 1,
  rows: 15,
  name: '',
  orderBy: 'createTime desc'
}

const usePublic = (typeCode = '0101') => {
  const [tableData, tableDataSet] = useState([]); // 数据源列表数据
  const [pagination, paginationSet] = useState(PAGINATION); // table的分页信息
  const [dsParams, dsParamsSet] = useState(DATASOURCEPARAMS);  // 数据源列表请求参数

  // 获取数据源
  useEffect(() => {
    datasourceList({...dsParams,typeCode}).then(res => { // 调用数据源列表接口
      if (res.status === 200) {
        tableDataSet(res.data.records);
        paginationSet({ ...pagination, total: res.data.total });
      }
    });
  }, [dsParams]); // 监听查询参数的变化

  // 数据源名称搜索
  const onSearch = (value, event, info) => {
    dsParamsSet({ ...dsParams, name: value }); // 更新查询参数
  };

// table的page切换回调函数，用于处理分页变化时的逻辑。
  const pageChange = (pagination) => {
    const pageInfo = { ...dsParams, page: pagination.current }; // 更新页码
    dsParamsSet(pageInfo); // 设置查询参数
  };

  // 排序变化回调函数
  const sortChange = (orderBy) => {
    dsParamsSet({ ...dsParams, orderBy }); // 更新排序字段及方式
  };
  return {tableData,pagination,onSearch,pageChange,sortChange}
}

export default usePublic